Various data processing systems have been developed for use in applications such as storage systems, cellular telephone systems, and radio transmission systems. In each of the systems data is transferred from a sender to a receiver via some medium. For example, in a storage system, data is sent from a sender (i.e., a write function) to a receiver (i.e., a read function) via a storage medium. As information is stored and transmitted in the form of digital data, errors are introduced that, if not corrected, can corrupt the data and render the information unusable. The effectiveness of any transfer is impacted by any losses in data caused by various factors. Many types of data processors have been developed to detect and correct errors in digital data. For example, data detectors and decoders such as Maximum a Posteriori (MAP) detectors and Low Density Parity Check (LDPC) decoder may be used to detect and decode the values of data bits or multi-bit symbols retrieved from storage or transmission systems.
Sectors of data from storage systems or other blocks of data may vary in the signal to noise ratio (SNR) and thus in the difficulty of recovering the original data after storage or transmission. Data detectors such as Soft Output Viterbi Algorithm (SOVA) detectors may include Noise Predictive Finite Impulse Response (NPFIR) filters to improve data detection of noisy data sectors. An example NPFIR filter that may be embedded in a detector trellis is disclosed in FIG. 1. The NPFIR filter applies a mathematical operation to a digital data stream to achieve any of a wide range of desired frequency responses. The NPFIR is noise predictive because the filter or tap coefficients are tuned based on the expected noise.
As illustrated in FIG. 1, the NPFIR filter 100 passes an input 102 through a series of delay elements 104, 106 and 110, multiplying the delayed signals by filter coefficients or tap weights 112, 114, 116 and 120, and summing the results to yield a filtered output 122. The outputs 130, 140 and 150 of each delay element 104, 106 and 110 and the input 102 form a tapped delay line and are referred to as taps. The number of delay elements 104, 106 and 110, and thus the number of taps 102, 130, 140 and 150 (also referred to as the order or length of the NPFIR filter 100) may be increased to more finely tune the frequency response, but at the cost of increasing complexity. The NPFIR filter 100 implements a filtering equation such as Y[n]=F0X[n]+F1X[n−1]+F2X[n−2]+F3X[n−3] for the three-delay filter illustrated in FIG. 1, or more generally Y[n]=F0X[n]+F1X[n−1]+F2X[n−2]+ . . . +F3X[n−L], where X[n] is the current input 102, the value subtracted from n represents the index or delay applied to each term, Fi are the tap weights 112, 114, 116 and 120, Y[n] is the output 122 and L is the filter order. The input 102 is multiplied by tap weight 112 in a multiplier 124, yielding a first output term 126. The second tap 130 is multiplied by tap weight 114 in multiplier 132, yielding a second output term 134, which is combined with first output term 126 in an adder 136 to yield a first sum 148. The third tap 140 is multiplied by tap weight 116 in multiplier 142, yielding a third output term 144, which is combined with first sum 148 in adder 146 to yield a second sum 158. The fourth tap 150 is multiplied by tap weight 120 in multiplier 152, yielding a fourth output term 154, which is combined with second sum 158 in adder 156 to yield output 122. By changing the tap weights 25 112, 114, 116 and 120, the filtering applied to the input 102 by the NPFIR filter 100 is adjusted to select the desired pass frequencies and stop frequencies.
Multiple NPFIR filters may be embedded in a trellis-based SOVA data detector, with different NPFIR filters being selected based on the path taken through the trellis. The filter coefficients of such NPFIR filters are initially tuned based on expected noise statistics for the data sectors, but may be less effective than desired if the noise statistics are different than expected.